﻿namespace DimensionsHelper.Common.Contracts;

/// <summary>
///     此接口用于读取和写入配置文件内容，后台对应的ViewModel类需要实现此接口。
/// </summary>
/// <typeparam name="T"></typeparam>
public interface IProjectOption<T> where T : class, new()
{
    /// <summary>
    ///     向目标配置对象中写入当前数据。
    /// </summary>
    /// <param name="target">目标配置对象</param>
    /// <returns>写入成功时，返回true；发生不可忽略的错误时，返回false。</returns>
    bool TryWriteOption(T target);

    /// <summary>
    ///     从指定类型的对象中读取所需数据。
    /// </summary>
    /// <param name="source">已有的配置对象</param>
    void LoadOption(T source);
}